package contato.DAO;

import java.util.ArrayList;

import javax.faces.bean.ViewScoped;
import javax.persistence.EntityManager;
import javax.persistence.Query;

import rta.dataacess.Cerca;
import rta.dataacess.Cidade;
import rta.dataacess.Estado;
import rta.dataacess.Imei;

import rta.dataacess.Usuario;

public class CercaDao extends GenericDAO<Cerca> {

	public CercaDao() {
		super(Cerca.class);

	}

	public CercaDao(EntityManager entityManager) {
		super(Cerca.class, entityManager);
	}

	public Imei findUsuario(Usuario usuario) {

		Imei imei = null;
		String hql = "FROM Imei WHERE usuario = ?";

		EntityManager entityManager = getEntityManager();
		Query query = entityManager.createQuery(hql);

		query.setParameter(1, usuario);

		try {
			imei = (Imei) query.getSingleResult();

			return imei;

		} catch (RuntimeException e) {

			return imei = null;

		}
	}

	public ArrayList<Estado> buscarEstados() {
		ArrayList<Estado> estados = null;
		String hql = "FROM Estado ";

		EntityManager entityManager = getEntityManager();
		Query query = entityManager.createQuery(hql);

		try {
			estados = (ArrayList<Estado>) query.getResultList();

			return estados;

		} catch (RuntimeException e) {

			return estados = null;

		}
	}

	public Estado findBySigla(String estadoSelecionado) {
		Estado estados = null;
		String hql = "FROM Estado WHERE sglEstado = ?";

		EntityManager entityManager = getEntityManager();
		Query query = entityManager.createQuery(hql);

		query.setParameter(1, estadoSelecionado);

		try {
			estados = (Estado) query.getSingleResult();

			return estados;

		} catch (RuntimeException e) {

			return estados = null;

		}
	}

	public ArrayList<Cidade> buscarCidadesBD(Estado codEstado) {

		ArrayList<Cidade> cidades = null;
		String hql = "FROM Cidade WHERE estado = ?";

		EntityManager entityManager = getEntityManager();
		Query query = entityManager.createQuery(hql);
		query.setParameter(1, codEstado);
		try {
			cidades = (ArrayList<Cidade>) query.getResultList();

			return cidades;

		} catch (RuntimeException e) {
			System.out.println(e);
			return cidades = null;

		}
	}

	public ArrayList<Cerca> findByImei(Imei imei2) {

		ArrayList<Cerca> cercas = null;
		String hql = "FROM Cerca WHERE imei = ?";

		EntityManager entityManager = getEntityManager();
		Query query = entityManager.createQuery(hql);
		query.setParameter(1, imei2);
		try {
			cercas = (ArrayList<Cerca>) query.getResultList();

			return cercas;

		} catch (RuntimeException e) {
			System.out.println(e);
			return cercas = null;

		}
	}



}
